From: Alejandro PiƱeiro Date: Fri, 24 Aug 2012 15:18:31 +0000 (+0200) Subject: a11y: exposing the proper button role while using toggle_mode on St.Button X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6041 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a1ecf459b3f9833c6b9ddc68dfb0a654f5f1f9f2;p=gnome-shell.git a11y: exposing the proper button role while using toggle_mode on St.Button https://bugzilla.gnome.org/show_bug.cgi?id=682366 --- diff --git a/src/st/st-button.c b/src/st/st-button.c index a4edbe75a..3d672bc28 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -777,14 +777,32 @@ st_button_accessible_notify_label_cb (StButton *button, g_object_notify (G_OBJECT (accessible), "accessible-name"); } +static void +st_button_accessible_compute_role (AtkObject *accessible, + StButton *button) +{ + atk_object_set_role (accessible, button->priv->is_toggle + ? ATK_ROLE_TOGGLE_BUTTON : ATK_ROLE_PUSH_BUTTON); +} + +static void +st_button_accessible_notify_toggle_mode_cb (StButton *button, + GParamSpec *psec, + AtkObject *accessible) +{ + st_button_accessible_compute_role (accessible, button); +} + static void st_button_accessible_initialize (AtkObject *obj, - gpointer data) + gpointer data) { ATK_OBJECT_CLASS (st_button_accessible_parent_class)->initialize (obj, data); - obj->role = ATK_ROLE_PUSH_BUTTON; + st_button_accessible_compute_role (obj, ST_BUTTON (data)); g_signal_connect (data, "notify::label", G_CALLBACK (st_button_accessible_notify_label_cb), obj); + g_signal_connect (data, "notify::toggle-mode", + G_CALLBACK (st_button_accessible_notify_toggle_mode_cb), obj); }